const{ User}=require('../model')
const jwt=require('../util/jwt')
const {jwtSecret}=require('../config/config.default')


// 用户登录
/*
	1，数据验证2，生成token3，发送响应
*/
exports.login=async(req,res,next)=>{
	try{
		const user=req.user.toJSON()
		const token=await jwt.sign({
			userId:user._id
		}, jwtSecret,{
			expiresIn:60*60*24*7
		})
		// expiresIn   有效时间
		delete user.password
		res.status(200).json({
			...user,
			token
		})
	}catch(err){
		next(err)
	}
}

// 用户注册
/*
	1，获取请求体数据 2，数据验证 3，验证通锅，存储数据到数据库 4，发送成功响应
*/
exports.register=async(req,res,next)=>{
	try{
		// console.log(req.body);
		// 创建对象并且赋值
		let user= new User(req.body.user)
		
		// 保存数据
		await user.save()
		// 除掉password后返回数据,正常情况下删除对象属性就可以了。但是mongoose对数据模型做了特殊处理，删除不掉
		// console.log(delete user['password']); 返回值是布尔，操作成功结果
		
		// 先转为json，再移除
		user=user.toJSON()
		delete user['password']
		
		res.status(200).json({
			user
		})
		
	}catch(err){
		next(err)
	}
}

// 获取当前登录用户
exports.getUser=async(req,res,next)=>{
	try{
		res.status(200).json({
			user:req.user
		})
		
	}catch(err){
		next(err)
	}
}

// 更新当前登录用户
exports.putUser=async(req,res,next)=>{
	try{
		
		// 处理请求
		res.send(" 更新当前登录用户")
		
	}catch(err){
		next(err)
	}
}